package cn.edu.zafu.bigdata.x.wgj.j;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.io.IOException;

public class UDPClient {
    public static void main(String[] args) {
        try {
            // 创建UDP套接字
            DatagramSocket socket = new DatagramSocket();

            // 向服务端发送请求的字节数组，这里内容为空，仅作为请求标识
            byte[] requestData = new byte[0];
            // 获取服务端的IP地址，这里假设服务端运行在本地（如果是同学的电脑，需替换为同学电脑的IP地址）
            InetAddress serverAddress = InetAddress.getByName("127.0.0.1");
            // 服务端监听的端口号，要和服务端代码中设置的一致，这里是9999
            int serverPort = 6666;

            // 创建用于向服务端发送请求的数据包
            DatagramPacket requestPacket = new DatagramPacket(requestData, requestData.length, serverAddress, serverPort);
            // 向服务端发送请求数据包
            socket.send(requestPacket);

            byte[] buffer = new byte[1024];
            // 创建用于接收服务端回复的数据包
            DatagramPacket receivePacket = new DatagramPacket(buffer, buffer.length);
            // 接收服务端发送的包含时间信息的数据包，此方法会阻塞直到收到数据包
            socket.receive(receivePacket);

            // 从接收到的数据包中提取时间信息字节数组，并转换为字符串
            String timeString = new String(receivePacket.getData(), 0, receivePacket.getLength());
            System.out.println("从服务端获取的当前时间为： " + timeString);

            // 关闭UDP套接字
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
